home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / magazi~1 / 363 / superspl.s < prev    next >
Encoding:
Text File  |  1989-02-05  |  25.7 KB  |  868 lines

  1. ******************************
  2. * Super Spool Desk Accessory *
  3. *            by              *
  4. *        Kirk Stover         *
  5. ******************************
  6.  
  7.             text
  8.  
  9. *--------------------------
  10.  
  11. gemdos      equ 1
  12. bios        equ 13
  13. xbios       equ 14
  14.  
  15. *--------------------------
  16.  
  17. nrObjects   equ 22
  18. ixObjects   equ 320
  19. nrTrees     equ 1
  20. ixTrees     equ 848
  21. nrTedInfos  equ 5
  22. ixTedInfos  equ 180
  23.  
  24. *--------------------------
  25. * Resource Object Indexes
  26.  
  27. SERIAL      equ 15
  28. PARALLEL    equ 14
  29. TURNON      equ 17
  30. ABORT       equ 19
  31. TURNOFF     equ 18
  32. CANCEL      equ 20
  33. OK          equ 21
  34. TREE        equ 0
  35. BUFFVAL     equ 7
  36. BUFFDOWN    equ 6
  37. BUFFUP      equ 8
  38. SPEDVAL     equ 11
  39. SPEDDOWN    equ 10
  40. SPEDUP      equ 12
  41.  
  42. *--------------------------
  43.  
  44. start       move.l   #new_stack,sp
  45.             bsr      main
  46.             move.w   #0,-(sp)
  47.             trap     #gemdos
  48.  
  49. *--------------------------
  50.  
  51. call_aes    move.l   #aespb,d1
  52.             move.w   #$c8,d0
  53.             trap     #2
  54.             rts
  55.  
  56. *--------------------------
  57.  
  58. call_vdi    move.l   #vdipb,d1
  59.             move.w   #$73,d0
  60.             trap     #2
  61.             rts
  62.  
  63. *--------------------------
  64.  
  65. appl_init   move.w   #10,opcode
  66.             move.w   #0,sintin
  67.             move.w   #1,sintout
  68.             move.w   #0,saddrin
  69.             move.w   #0,saddrout
  70.             bsr      call_aes
  71.             move.w   intout,appl_id
  72.             rts
  73.  
  74. *--------------------------
  75.  
  76. graf_handle move.w   #77,opcode
  77.             move.w   #0,sintin
  78.             move.w   #5,sintout
  79.             move.w   #0,saddrin
  80.             move.w   #0,saddrout
  81.             bsr      call_aes
  82.             move.w   intout,gr_handle
  83.             rts
  84.  
  85. *--------------------------
  86.  
  87. wind_update move.w   #107,opcode
  88.             move.w   #1,sintin
  89.             move.w   #1,sintout
  90.             move.w   #0,saddrin
  91.             move.w   #0,saddrout
  92.             move.w   d0,intin
  93.             bsr      call_aes
  94.             rts
  95.  
  96. *--------------------------
  97.  
  98. objc_draw   move.w   #42,opcode
  99.             move.w   #6,sintin
  100.             move.w   #1,sintout
  101.             move.w   #1,saddrin
  102.             move.w   #0,saddrout
  103.             move.w   start_obj,intin
  104.             move.w   #10,intin+2
  105.             move.w   x,intin+4
  106.             move.w   y,intin+6
  107.             move.w   w,intin+8
  108.             move.w   h,intin+10
  109.             move.l   tree_addr,addrin
  110.             bsr      call_aes
  111.             move.w   intout,d0
  112.             rts
  113.  
  114. *--------------------------
  115.  
  116. form_do     move.w   #50,opcode
  117.             move.w   #1,sintin
  118.             move.w   #1,sintout
  119.             move.w   #1,saddrin
  120.             move.w   #0,saddrout
  121.             move.w   #0,intin
  122.             move.l   tree_addr,addrin
  123.             bsr      call_aes
  124.             move.w   intout,d0
  125.             rts
  126.  
  127. *--------------------------
  128.  
  129. form_dial   move.w   #51,opcode
  130.             move.w   #9,sintin
  131.             move.w   #1,sintout
  132.             move.w   #0,saddrin
  133.             move.w   #0,saddrout
  134.             move.w   d0,intin
  135.             move.w   #0,intin+2
  136.             move.w   #0,intin+4
  137.             move.w   #0,intin+6
  138.             move.w   #0,intin+8
  139.             move.w   x,intin+10
  140.             move.w   y,intin+12
  141.             move.w   w,intin+14
  142.             move.w   h,intin+16
  143.             bsr      call_aes
  144.             move.w   intout,d0
  145.             rts
  146.  
  147. *--------------------------
  148.  
  149. form_alert  move.w   #52,opcode
  150.             move.w   #1,sintin
  151.             move.w   #1,sintout
  152.             move.w   #1,saddrin
  153.             move.w   #0,saddrout
  154.             move.w   d0,intin
  155.             move.l   a0,addrin
  156.             bsr      call_aes
  157.             move.w   intout,d0
  158.             rts
  159.  
  160. *--------------------------
  161.  
  162. form_center move.w   #54,opcode
  163.             move.w   #0,sintin
  164.             move.w   #5,sintout
  165.             move.w   #1,saddrin
  166.             move.w   #0,saddrout
  167.             move.l   tree_addr,addrin
  168.             bsr      call_aes
  169.             move.w   intout+2,x
  170.             move.w   intout+4,y
  171.             move.w   intout+6,w
  172.             move.w   intout+8,h
  173.             rts
  174.  
  175. *--------------------------
  176.  
  177. menu_register move.w #35,opcode
  178.             move.w   #1,sintin
  179.             move.w   #1,sintout
  180.             move.w   #1,saddrin
  181.             move.w   #0,saddrout
  182.             move.w   appl_id,intin
  183.             move.l   #spool_title,addrin
  184.             bsr      call_aes
  185.             move.w   intout,menu_id
  186.             rts
  187.  
  188. *--------------------------
  189.  
  190. evnt_multi  move.w   #25,opcode
  191.             move.w   #16,sintin
  192.             move.w   #7,sintout
  193.             move.w   #1,saddrin
  194.             move.w   #0,saddrout
  195.             move.w   #$0010,intin         ; message event
  196.             tst.w    print_flag
  197.             beq      evnt_mult_1
  198.             tst.w    spool_flag
  199.             beq      evnt_mult_1
  200.             ori.w    #$0020,intin         ; timer event
  201. evnt_mult_1 move.w   #0,intin+2
  202.             move.w   #0,intin+4
  203.             move.w   #0,intin+6
  204.             move.w   #0,intin+8
  205.             move.w   #0,intin+10
  206.             move.w   #0,intin+12
  207.             move.w   #0,intin+14
  208.             move.w   #0,intin+16
  209.             move.w   #0,intin+18
  210.             move.w   #0,intin+20
  211.             move.w   #0,intin+22
  212.             move.w   #0,intin+24
  213.             move.w   #0,intin+26
  214.             move.l   #4000,d0
  215.             divs     old_spedval,d0
  216.             move.w   d0,intin+28
  217.             move.w   #0,intin+30
  218.             move.l   #msg_buff,addrin
  219.             bsr      call_aes
  220.             move.w   intout,d0
  221.             rts
  222.  
  223. *--------------------------
  224.  
  225. get_resolut move.w   #4,-(sp)
  226.             trap     #xbios
  227.             addq.l   #2,sp
  228.             move.w   #16,height
  229.             cmp.w    #2,d0
  230.             beq      get_resol_x
  231.             move.w   #8,height
  232. get_resol_x rts
  233.  
  234. *--------------------------
  235.  
  236. fix_rsrc    move.l   #resource,a0         ; fix tree index
  237.             add.l    #ixTrees,a0
  238.             add.l    #resource,(a0)
  239.             move.l   (a0),tree_addr
  240.             move.l   #resource,a0         ; fix tedinfos
  241.             add.l    #ixTedInfos,a0
  242.             move.w   #nrTedInfos,d0
  243.             sub.w    #1,d0
  244. fix_rsrc_1  add.l    #resource,0(a0)      ; ptext
  245.             add.l    #resource,4(a0)      ; ptmplt
  246.             add.l    #resource,8(a0)      ; pvalid
  247.             add.l    #28,a0
  248.             dbra     d0,fix_rsrc_1
  249.             move.l   #resource,a0         ; fix objects
  250.             add.l    #ixObjects,a0
  251.             move.w   #nrObjects,d0
  252.             sub.w    #1,d0
  253. fix_rsrc_2  cmp.w    #20,6(a0)            ; gbox
  254.             beq      fix_rsrc_3
  255.             cmp.w    #24,6(a0)            ; gprogdef
  256.             beq      fix_rsrc_3
  257.             cmp.w    #25,6(a0)            ; gibox
  258.             beq      fix_rsrc_3
  259.             cmp.w    #27,6(a0)            ; gboxchar
  260.             beq      fix_rsrc_3
  261.             add.l    #resource,12(a0)     ; fix specs
  262. fix_rsrc_3  move.w   16(a0),d1
  263.             mulu     #8,d1
  264.             move.w   d1,16(a0)            ; fix x coordinate
  265.             move.w   18(a0),d1
  266.             mulu     height,d1
  267.             move.w   d1,18(a0)            ; fix y coordinate
  268.             move.w   20(a0),d1
  269.             mulu     #8,d1
  270.             move.w   d1,20(a0)            ; fix width
  271.             move.w   22(a0),d1
  272.             mulu     height,d1
  273.             move.w   d1,22(a0)            ; fix height
  274.             add.l    #24,a0
  275.             dbra     d0,fix_rsrc_2
  276.             move.l   tree_addr,a0
  277.             move.w   #BUFFVAL,d0
  278.             mulu     #24,d0
  279.             add.w    d0,a0
  280.             move.l   12(a0),a0
  281.             move.l   (a0),buffval_adr
  282.             move.l   tree_addr,a0
  283.             move.w   #SPEDVAL,d0
  284.             mulu     #24,d0
  285.             add.w    d0,a0
  286.             move.l   12(a0),a0
  287.             move.l   (a0),spedval_adr
  288.             rts
  289.  
  290. *--------------------------
  291.  
  292. select      move.l   tree_addr,a0
  293.             mulu     #24,d0
  294.             add.w    d0,a0
  295.             or.w     #0001,10(a0)
  296.             rts
  297.  
  298. *--------------------------
  299.  
  300. deselect    move.l   tree_addr,a0      ; point to the dialog
  301.             mulu     #24,d0            ; calculate object offset
  302.             add.w    d0,a0             ; add to pointer
  303.             and.w    #$fffe,10(a0)     ; turn off selected bit
  304.             rts                        ; return
  305.  
  306. *--------------------------
  307.  
  308. nodisable   move.l   tree_addr,a0
  309.             mulu     #24,d0
  310.             add.w    d0,a0
  311.             and.w    #$fff7,10(a0)
  312.             rts
  313.  
  314. *--------------------------
  315.  
  316. disable     move.l   tree_addr,a0
  317.             mulu     #24,d0
  318.             add.w    d0,a0
  319.             or.w     #$0008,10(a0)
  320.             rts
  321.  
  322. *--------------------------
  323.  
  324. get_select  move.l   tree_addr,a0
  325.             mulu     #24,d0
  326.             add.w    d0,a0
  327.             move.w   10(a0),d0
  328.             and.w    #$0001,d0
  329.             tst.w    d0
  330.             rts
  331.  
  332. *--------------------------
  333.  
  334. button_stat move.w   #CANCEL,d0
  335.             bsr      deselect
  336.             move.w   #OK,d0
  337.             bsr      deselect
  338.             move.w   #PARALLEL,d0
  339.             bsr      nodisable
  340.             move.w   #SERIAL,d0
  341.             bsr      nodisable
  342.             move.w   #TURNON,d0
  343.             bsr      nodisable
  344.             move.w   #TURNOFF,d0
  345.             bsr      nodisable
  346.             move.w   #ABORT,d0
  347.             bsr      nodisable
  348.             tst.w    spool_flag
  349.             bne      butt_stat_1
  350.             move.w   #ABORT,d0
  351.             bsr      disable
  352.             bra      butt_stat_x
  353. butt_stat_1 tst.w    print_flag
  354.             bne      butt_stat_2
  355.             move.w   #ABORT,d0
  356.             bsr      disable
  357.             bra      butt_stat_x
  358. butt_stat_2 move.w   #TURNOFF,d0
  359.             bsr      disable
  360.             move.w   #PARALLEL,d0
  361.             bsr      disable
  362.             move.w   #SERIAL,d0
  363.             bsr      disable
  364. butt_stat_x rts
  365.  
  366. *--------------------------
  367.  
  368. load_parm   move.l   #old_parm,a0
  369.             move.l   #new_parm,a1
  370.             move.w   (a0)+,(a1)+
  371.             move.w   (a0)+,(a1)+
  372.             move.w   (a0),(a1)
  373.             move.l   buffval_adr,a0
  374.             move.w   new_buffval,d0
  375.             bsr      bin_to_dec
  376.             move.l   spedval_adr,a0
  377.             move.w   new_spedval,d0
  378.             bsr      bin_to_dec
  379.             move.w   #PARALLEL,d0
  380.             bsr      deselect
  381.             move.w   #SERIAL,d0
  382.             bsr      deselect
  383.             move.w   new_printer,d0
  384.             bsr      select
  385.             move.w   #TURNON,d0
  386.             bsr      deselect
  387.             move.w   #TURNOFF,d0
  388.             bsr      deselect
  389.             move.w   #ABORT,d0
  390.             bsr      deselect
  391.             move.w   #TURNON,d0
  392.             tst.w    spool_flag
  393.             bne      load_parm_1
  394.             move.w   #TURNOFF,d0
  395. load_parm_1 bsr      select
  396.             tst.w    spool_flag
  397.             beq      load_parm_x
  398.             tst.w    print_flag
  399.             bne      load_parm_x
  400.             move.l   buff_beg,-(sp)
  401.             move.w   #$49,-(sp)
  402.             trap     #gemdos
  403.             addq.l   #6,sp
  404. load_parm_x rts
  405.  
  406. *--------------------------
  407.  
  408. save_parm   move.w   #PARALLEL,d0
  409.             move.w   d0,new_printer
  410.             bsr      get_select
  411.             bne      save_parm_1
  412.             move.w   #SERIAL,new_printer
  413. save_parm_1 move.w   #TURNON,d0
  414.             bsr      get_select
  415.             bne      save_parm_3
  416.             move.w   #TURNOFF,d0
  417.             bsr      get_select
  418.             beq      save_parm_2
  419.             tst.w    spool_flag
  420.             beq      save_parm_5
  421.             move.w   #0,spool_flag
  422.             move.l   trap13_save,-(sp)
  423.             move.w   #45,-(sp)
  424.             move.w   #5,-(sp)
  425.             trap     #bios
  426.             addq.l   #8,sp
  427.             bra      save_parm_5
  428. save_parm_2 move.w   #0,print_flag
  429.             move.l   buff_beg,head_ptr
  430.             move.l   buff_beg,tail_ptr
  431.             bra      save_parm_5
  432. save_parm_3 tst.w    print_flag
  433.             bne      save_parm_5
  434.             move.w   new_buffval,d0
  435.             mulu     #$0400,d0
  436.             move.l   d0,buff_end
  437.             move.l   d0,-(sp)
  438.             move.w   #$48,-(sp)
  439.             trap     #gemdos
  440.             addq.l   #6,sp
  441.             tst.l    d0
  442.             bpl      save_parm_4
  443.             bsr      ring_bell
  444.             move.l   #buff_alert,a0
  445.             move.w   #1,d0
  446.             bsr      form_alert
  447.             addq.l   #4,sp
  448.             bra      do_dial_1
  449. save_parm_4 move.l   d0,buff_beg
  450.             move.l   d0,head_ptr
  451.             move.l   d0,tail_ptr
  452.             add.l    d0,buff_end
  453.             tst.w    spool_flag
  454.             bne      save_parm_5
  455.             move.w   #1,spool_flag
  456.             move.l   #bios_trap,-(sp)
  457.             move.w   #45,-(sp)
  458.             move.w   #5,-(sp)
  459.             trap     #bios
  460.             addq.l   #8,sp
  461.             move.l   d0,trap13_save
  462. save_parm_5 move.l   #new_parm,a0
  463.             move.l   #old_parm,a1
  464.             move.w   (a0)+,(a1)+
  465.             move.w   (a0)+,(a1)+
  466.             move.w   (a0),(a1)
  467.             rts
  468.  
  469. *--------------------------
  470.  
  471. do_dialog   bsr      form_center
  472.             move.w   #0,d0
  473.             bsr      form_dial
  474.             move.w   #1,d0
  475.             bsr      form_dial
  476.             bsr      load_parm
  477. do_dial_1   move.w   #0,start_obj
  478.             bsr      button_stat
  479. do_dial_2   bsr      objc_draw
  480. do_dial_3   bsr      form_do
  481.             cmp.w    #BUFFDOWN,d0
  482.             bne      do_dial_4
  483.             bsr      buffer_down
  484.             bra      do_dial_2
  485. do_dial_4   cmp.w    #BUFFUP,d0
  486.             bne      do_dial_5
  487.             bsr      buffer_up
  488.             bra      do_dial_2
  489. do_dial_5   cmp.w    #SPEDDOWN,d0
  490.             bne      do_dial_6
  491.             bsr      speed_down
  492.             bra      do_dial_2
  493. do_dial_6   cmp.w    #SPEDUP,d0
  494.             bne      do_dial_7
  495.             bsr      speed_up
  496.             bra      do_dial_2
  497. do_dial_7   cmp.w    #CANCEL,d0
  498.             beq      do_dial_8
  499.             cmp.w    #OK,d0
  500.             bne      do_dial_3
  501.             bsr      save_parm
  502. do_dial_8   move.w   #2,d0
  503.             bsr      form_dial
  504.             move.w   #3,d0
  505.             bsr      form_dial
  506.             rts
  507.  
  508. *--------------------------
  509.  
  510. bin_to_dec  add.l    #4,a0
  511.             move.w   #2,d1
  512. bin_dec_1   ext.l    d0
  513.             divs     #10,d0
  514.             swap     d0
  515.             move.b   d0,-(a0)
  516.             add.b    #'0',(a0)
  517.             swap     d0
  518.             dbra     d1,bin_dec_1
  519.             rts
  520.  
  521. *--------------------------
  522.  
  523. ring_bell   move.w   #7,-(sp)
  524.             move.w   #2,-(sp)
  525.             trap     #gemdos
  526.             addq.l   #4,sp
  527.             rts
  528.  
  529. *--------------------------
  530.  
  531. buffer_down move.w   #BUFFVAL,start_obj
  532.             tst.w    print_flag
  533.             bne      ring_bell
  534.             move.w   new_buffval,d0
  535.             sub.w    #1,d0
  536.             beq      buff_down_x
  537.             move.w   d0,new_buffval
  538.             move.l   buffval_adr,a0
  539.             bsr      bin_to_dec
  540. buff_down_x rts
  541.  
  542. *--------------------------
  543.  
  544. buffer_up   move.w   #BUFFVAL,start_obj
  545.             tst.w    print_flag
  546.             bne      ring_bell
  547.             add.w    #1,new_buffval
  548.             move.w   new_buffval,d0
  549.             mulu     #$400,d0
  550.             move.l   d0,-(sp)
  551.             move.l   #-1,-(sp)
  552.             move.w   #$48,-(sp)
  553.             trap     #gemdos
  554.             addq.l   #6,sp
  555.             move.l   (sp)+,d1
  556.             cmp.l    d0,d1
  557.             bhi      buff_up_1
  558.             move.w   new_buffval,d0
  559.             move.l   buffval_adr,a0
  560.             bsr      bin_to_dec
  561.             bra      buff_up_x
  562. buff_up_1   sub.w    #1,new_buffval
  563.             move.l   #buff_alert,a0
  564.             move.w   #1,d0
  565.             bsr      form_alert
  566. buff_up_x   rts
  567.  
  568. *--------------------------
  569.  
  570. speed_down  move.w   new_spedval,d0
  571.             sub.w    #10,d0
  572.             beq      speed_down_x
  573.             move.w   d0,new_spedval
  574.             move.l   spedval_adr,a0
  575.             bsr      bin_to_dec
  576. speed_down_x move.w   #SPEDVAL,start_obj
  577.             rts
  578.  
  579. *--------------------------
  580.  
  581. speed_up    move.w   new_spedval,d0
  582.             add.w    #10,d0
  583.             cmp.w    #300,d0
  584.             bgt      speed_up_x
  585.             move.w   d0,new_spedval
  586.             move.l   spedval_adr,a0
  587.             bsr      bin_to_dec
  588. speed_up_x  move.w   #SPEDVAL,start_obj
  589.             rts
  590.  
  591. *--------------------------
  592.  
  593. main        bsr      appl_init
  594.             bsr      graf_handle
  595.             bsr      menu_register
  596.             bsr      get_resolut
  597.             bsr      fix_rsrc
  598. loop        bsr      evnt_multi
  599.             move.w   d0,d1
  600.             and.w    #$0010,d1
  601.             cmp.w    #$0010,d1
  602.             beq      do_msg
  603.             and.w    #$0020,d0
  604.             cmp.w    #$0020,d0
  605.             bne      loop
  606. do_print    bsr      print
  607.             bsr      print
  608.             bsr      print
  609.             bsr      print
  610.             bra      loop
  611. do_msg      cmp.w    #$28,msg_buff     ; does accessory want to open?
  612.             bne      loop
  613.             move.w   msg_buff+8,d0
  614.             cmp.w    menu_id,d0        ; is it our accessory?
  615.             bne      loop
  616.             move.w   #1,d0
  617.             bsr      wind_update
  618.             bsr      do_dialog         ; go do the dialog
  619.             move.w   #0,d0
  620.             bsr      wind_update
  621.             bra      loop
  622.  
  623. *--------------------------
  624.  
  625. print       tst.w    print_flag
  626.             beq      print_x
  627.             move.l   head_ptr,a3
  628.             addq.l   #1,a3
  629.             cmp.l    buff_end,a3
  630.             bne      print_1
  631.             move.l   buff_beg,a3
  632. print_1     cmp.l    tail_ptr,a3
  633.             bne      print_2
  634.             move.w   #0,print_flag
  635.             bra      print_x
  636. print_2     bsr      spool_stat
  637.             beq      print_x
  638.             move.l   a3,head_ptr
  639.             move.b   (a3),d0
  640.             bsr      spool_out
  641. print_x     rts
  642.  
  643. *--------------------------
  644.  
  645. spool_stat  move.w   #$ffff,-(sp)         ; spool device
  646.             move.w   #8,-(sp)             ; bconstat
  647.             trap     #bios
  648.             addq.l   #4,sp
  649.             tst.w    d0
  650.             rts
  651.  
  652. *--------------------------
  653.  
  654. spool_out   and.w    #$00ff,d0
  655.             move.w   d0,-(sp)
  656.             move.w   #$ffff,-(sp)         ; spool device
  657.             move.w   #3,-(sp)             ; bconout
  658.             trap     #bios
  659.             addq.l   #6,sp
  660.             rts
  661.  
  662. *--------------------------
  663.  
  664. bios_trap   move.l   sp,a1
  665.             btst     #5,(sp)
  666.             bne      bios_trap_1
  667.             move.l   usp,a1
  668.             subq.w   #6,a1
  669. bios_trap_1 cmp.w    #3,6(a1)       ; BCONOUT?
  670.             bne      bios_trap_3
  671.             move.w   8(a1),d0
  672.             cmp.w    device,d0
  673.             bne      bios_trap_2
  674.             move.w   10(a1),d0
  675.             bra      load_buffer
  676. bios_trap_2 cmp.w    #$ffff,d0      ; spool device?
  677.             bne      trap_13
  678.             move.w   device,8(a1)
  679.             bra      trap_13
  680. bios_trap_3 cmp.w    #8,6(a1)       ; BCONSTAT?
  681.             bne      trap_13
  682.             move.w   8(a1),d0
  683.             cmp.w    device,d0
  684.             bne      bios_trap_5
  685.             move.l   tail_ptr,a0
  686.             addq.l   #1,a0
  687.             cmp.l    buff_end,a0
  688.             bne      bios_trap_4
  689.             move.l   buff_beg,a0
  690. bios_trap_4 moveq.l  #-1,d0
  691.             cmp.l    head_ptr,a0
  692.             bne      bios_trap_x
  693.             moveq.l  #0,d0
  694.             bra      bios_trap_x
  695. bios_trap_5 cmp.w    #$ffff,d0      ; spool device?
  696.             bne      trap_13
  697.             move.w   device,8(a1)
  698.             bra      trap_13
  699. bios_trap_x rte
  700.  
  701. *--------------------------
  702.  
  703. trap_13     move.l   trap13_save,a0
  704.             jmp      (a0)
  705.  
  706. *--------------------------
  707.  
  708. load_buffer tst.w    print_flag
  709.             bne      load_buff_1
  710.             move.l   buff_beg,head_ptr
  711.             move.l   buff_beg,tail_ptr
  712. load_buff_1 move.l   tail_ptr,a0
  713.             addq.l   #1,a0
  714.             cmp.l    buff_end,a0
  715.             bne      load_buff_2
  716.             move.l   buff_beg,a0
  717. load_buff_2 cmp.l    head_ptr,a0
  718.             bne      load_buff_4
  719.             move.l   head_ptr,a2
  720.             addq.l   #1,a2
  721.             cmp.l    buff_end,a2
  722.             bne      load_buff_3
  723.             move.l   buff_beg,a2
  724. load_buff_3 move.b   (a2),d1
  725.             move.l   a2,head_ptr
  726.             move.w   d1,10(a1)
  727.             move.w   device,8(a1)
  728.             move.l   a0,tail_ptr
  729.             move.b   d0,(a0)
  730.             bra      trap_13
  731. load_buff_4 move.l   a0,tail_ptr
  732.             move.b   d0,(a0)
  733.             move.w   #1,print_flag
  734.             moveq.l  #-1,d0
  735. load_buff_x rte
  736.  
  737. *--------------------------
  738.  
  739. gr_handle   ds.w  1
  740. appl_id     ds.w  1
  741. menu_id     ds.w  1
  742. tree_addr   ds.l  1
  743. start_obj   ds.w  1
  744. print_flag  dc.w  0
  745. spool_flag  dc.w  0
  746. device      ds.w  1
  747. height      ds.w  1
  748. x           ds.w  1
  749. y           ds.w  1
  750. w           ds.w  1
  751. h           ds.w  1
  752. msg_buff    ds.w  8
  753. buffval_adr ds.l  1
  754. spedval_adr ds.l  1
  755. buff_beg    dc.l  0
  756. head_ptr    ds.l  1
  757. tail_ptr    ds.l  1
  758. buff_end    ds.l  1
  759. trap13_save ds.l  1
  760.  
  761. old_parm    ds.w  0
  762. old_buffval dc.w  8
  763. old_spedval dc.w  100
  764. old_printer dc.w  PARALLEL
  765.  
  766. new_parm    ds.w  0
  767. new_buffval ds.w  1
  768. new_spedval ds.w  1
  769. new_printer ds.w  1
  770.  
  771. spool_title dc.b  '  Super Spool',0
  772.  
  773. buff_alert  dc.b  '[3][There is not enough|'
  774.             dc.b  'memory available for|'
  775.             dc.b  'the buffer.  Please|'
  776.             dc.b  'change the size.][OK]',0
  777.  
  778. aespb       dc.l  contrl,global,intin,intout,addrin,addrout
  779. vdipb       dc.l  contrl,intin,ptsin,intout,ptsout
  780.  
  781.  
  782. contrl      ds.w  0
  783. opcode      ds.w  1
  784. sintin      ds.w  1
  785. sintout     ds.w  1
  786. saddrin     ds.w  1
  787. saddrout    ds.w  1
  788.  
  789. global      ds.w  0
  790. apversion   ds.w  1
  791. apcount     ds.w  1
  792. apid        ds.w  1
  793. apprivate   ds.l  1
  794. apptree     ds.l  1
  795. ap1resv     ds.l  1
  796. ap2resv     ds.l  1
  797. ap3resv     ds.l  1
  798. ap4resv     ds.l  1
  799.  
  800. intin       ds.w  128
  801. ptsin       ds.w  128
  802. intout      ds.w  128
  803. ptsout      ds.w  128
  804. addrin      ds.w  128
  805. addrout     ds.w  128
  806.  
  807.             ds.l  200
  808. new_stack   ds.l  1
  809.  
  810. resource    ds.w 0
  811.             dc.w $0000,$0140,$00B4,$00B4,$00B4,$00B4,$0024,$00B4
  812.             dc.w $00B4,$0350,$0016,$0001,$0005,$0000,$0000,$0000
  813.             dc.w $0000,$0354,$2062,$7920,$4B69,$726B,$2053,$746F
  814.             dc.w $7665,$7220,$0000,$200E,$0F20,$5375,$7065,$7220
  815.             dc.w $5370,$6F6F,$6C20,$5631,$2E30,$3020,$0E0F,$2000
  816.             dc.w $4275,$6666,$6572,$2053,$697A,$6520,$284B,$293A
  817.             dc.w $2000,$0020,$3030,$3820,$0000,$5072,$696E,$7465
  818.             dc.w $7220,$5370,$6565,$643A,$2000,$0020,$3130,$3020
  819.             dc.w $0000,$5061,$7261,$6C6C,$656C,$0053,$6572,$6961
  820.             dc.w $6C00,$2020,$4F6E,$2020,$2000,$2020,$4F66,$6620
  821.             dc.w $2020,$0041,$626F,$7274,$0043,$414E,$4345,$4C00
  822.             dc.w $4F4B,$0000,$0000,$0024,$0000,$0000,$0000,$0035
  823.             dc.w $0005,$0006,$0000,$1121,$0000,$0000,$0011,$0001
  824.             dc.w $0000,$0050,$0000,$0000,$0000,$0062,$0003,$0006
  825.             dc.w $0000,$1180,$0000,$00FF,$0012,$0001,$0000,$0063
  826.             dc.w $0000,$0000,$0000,$0069,$0003,$0006,$0000,$1180
  827.             dc.w $0000,$00FF,$0006,$0001,$0000,$006A,$0000,$0000
  828.             dc.w $0000,$007A,$0003,$0006,$0000,$1180,$0000,$00FF
  829.             dc.w $0010,$0001,$0000,$007B,$0000,$0000,$0000,$0081
  830.             dc.w $0003,$0006,$0000,$1180,$0000,$00FF,$0006,$0001
  831.             dc.w $FFFF,$0001,$0004,$0014,$0000,$0020,$0001,$1161
  832.             dc.w $0000,$0000,$0026,$0014,$0004,$0002,$0003,$0014
  833.             dc.w $0000,$0000,$00FE,$1100,$0002,$0001,$0022,$0003
  834.             dc.w $0003,$FFFF,$FFFF,$0015,$0000,$0000,$0000,$00B4
  835.             dc.w $000B,$0002,$000C,$0001,$0001,$FFFF,$FFFF,$001C
  836.             dc.w $0000,$0000,$0000,$0036,$0004,$0001,$0019,$0001
  837.             dc.w $0000,$0005,$0015,$0014,$0000,$0000,$00FE,$1100
  838.             dc.w $0002,$0005,$0022,$000E,$0006,$FFFF,$FFFF,$0015
  839.             dc.w $0000,$0000,$0000,$00D0,$0002,$0001,$0011,$0001
  840.             dc.w $0007,$FFFF,$FFFF,$001B,$0040,$0000,$02FF,$1100
  841.             dc.w $0013,$0001,$0004,$0001,$0008,$FFFF,$FFFF,$0016
  842.             dc.w $0000,$0000,$0000,$00EC,$0017,$0001,$0005,$0001
  843.             dc.w $0009,$FFFF,$FFFF,$001B,$0040,$0000,$01FF,$1100
  844.             dc.w $001C,$0001,$0004,$0001,$000A,$FFFF,$FFFF,$0015
  845.             dc.w $0000,$0000,$0000,$0108,$0002,$0003,$000F,$0001
  846.             dc.w $000B,$FFFF,$FFFF,$001B,$0040,$0000,$02FF,$1100
  847.             dc.w $0013,$0003,$0004,$0001,$000C,$FFFF,$FFFF,$0016
  848.             dc.w $0000,$0000,$0000,$0124,$0017,$0003,$0005,$0001
  849.             dc.w $000D,$FFFF,$FFFF,$001B,$0040,$0000,$01FF,$1100
  850.             dc.w $001C,$0003,$0004,$0001,$0010,$000E,$000F,$0014
  851.             dc.w $0000,$0000,$00FF,$1100,$0002,$0005,$001E,$0003
  852.             dc.w $000F,$FFFF,$FFFF,$001A,$0011,$0000,$0000,$0082
  853.             dc.w $0005,$0001,$0008,$0001,$000D,$FFFF,$FFFF,$001A
  854.             dc.w $0011,$0000,$0000,$008B,$0011,$0001,$0008,$0001
  855.             dc.w $0014,$0011,$0013,$0014,$0000,$0000,$00FF,$1100
  856.             dc.w $0002,$0008,$001E,$0003,$0012,$FFFF,$FFFF,$001A
  857.             dc.w $0011,$0000,$0000,$0092,$0001,$0001,$0008,$0001
  858.             dc.w $0013,$FFFF,$FFFF,$001A,$0011,$0000,$0000,$009A
  859.             dc.w $000B,$0001,$0008,$0001,$0010,$FFFF,$FFFF,$001A
  860.             dc.w $0011,$0000,$0000,$00A3,$0015,$0001,$0008,$0001
  861.             dc.w $0015,$FFFF,$FFFF,$001A,$0015,$0000,$0000,$00A9
  862.             dc.w $0007,$000C,$0008,$0001,$0004,$FFFF,$FFFF,$001A
  863.             dc.w $0037,$0000,$0000,$00B0,$0013,$000C,$0008,$0001
  864.             dc.w $0000,$0140
  865.  
  866.             end
  867.  
  868.